package Lee_code;

import java.awt.font.ShapeGraphicAttribute;
import java.util.Arrays;

/**
 * @author blh
 * @date 2024年06月27日 16:49
 */
public class Lee_31_627 {
    public void nextPermutation(int[] nums) {
        int len = nums.length;
        int sign = 0;
        for (int i = 1; i < len; i++) {
            if (nums[i] > nums[i - 1]) {
                sign = i - 1;
            }
        }
        // 从sign往后的序列需要排序 在之后的数组中找一个比i-1大的最小值
        if (sign != 0) {
            int min = 101;
            int minIndex = 0;
            for (int i = sign + 1; i < nums.length; i++) {
                if (nums[i] > nums[sign] && nums[i] <= min) {
                    minIndex = i;
                    min = nums[i];
                }
            }
            // 交换这两个值
            int temp = nums[sign];
            nums[sign] = min;
            nums[minIndex] = temp;
            // 对sign之后的数组从小到大排序
            Arrays.sort(nums, sign, nums.length);

        } else {
            Arrays.sort(nums);
        }
    }
}
